package com.leyou.trade.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.leyou.trade.dto.OrderDTO;
import com.leyou.trade.dto.OrderFormDTO;
import com.leyou.trade.entity.Order;

import java.util.Map;

public interface OrderService extends IService<Order> {
    /**
     * 创建订单
     * @param orderFormDTO  订单数据
     * @return  订单id
     */
    Long createOrder(OrderFormDTO orderFormDTO);

    /**
     * 根据id查询订单
     * @param orderId 订单id
     * @return 订单对象
     */
    OrderDTO getByOrderId(Long orderId);

    /**
     * 根据订单编号创建支付链接
     * @param orderId 订单编号
     * @return 支付链接
     */
    String getPayUrl(Long orderId);

    /**
     * 处理微信的异步通知
     * @param data 通知内容
     * @return 处理结果
     */
    void handleNotify(Map<String, String> data);

    /**
     * 监听清理订单的消息
     * @param orderId 订单id
     */
    void evictOrderIfNecessary(Long orderId);
}
